package com.dc.init;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dc.vo.SysConfigVO;
import com.dc.constat.SystemConstant;
import com.dc.entity.SysConfig;
import com.dc.mapper.SysConfigMapper;
import com.dc.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;

@Component
@Slf4j
public class InitParameterService {

    @Resource
    private SysConfigMapper sysConfigMapper;

    @Resource
    private RedisUtil redisUtil;

    @PostConstruct
    public void initParameter() {
        //初始化参数
        log.info("开始初始化参数开始");
        setRedisSysConfig();
        log.info("开始初始化参数结束");
    }

    private void setRedisSysConfig() {
        List<SysConfig> sysConfigs = sysConfigMapper.selectList(new QueryWrapper<>());
        for (SysConfig sysConfig : sysConfigs) {
            if (redisUtil.hasKey(SystemConstant.REDIS_CONFIG + sysConfig.getConfigKey())) {
                Object o = redisUtil.get(SystemConstant.REDIS_CONFIG + sysConfig.getConfigKey());
                if (o instanceof SysConfig) {
                    SysConfig dto = (SysConfig) o;
                    if (sysConfig.getUpdateTime().getTime() == dto.getUpdateTime().getTime()) {
                        return;
                    }
                }
            }
            SysConfigVO sysConfigVO = new SysConfigVO();
            BeanUtil.copyProperties(sysConfig, sysConfigVO);
            redisUtil.set(SystemConstant.REDIS_CONFIG + sysConfig.getConfigKey(), sysConfigVO);
        }
    }
}
